SQL CHECK Constraint क्या हैं?
CHECK नियंत्रण का उपयोग उन मानों की सीमा को सीमित करने के लिए किया जाता है जिन्हें किसी कॉलम में रखा जा सकता है।
यदि आप किसी कॉलम पर CHECK नियंत्रण परिभाषित करते हैं, तो यह इस कॉलम के लिए केवल कुछ मानों की अनुमति देगा।
यदि आप किसी तालिका पर CHECK नियंत्रण परिभाषित करते हैं, तो यह पंक्ति में अन्य स्तंभों के मानों के आधार पर कुछ स्तंभों में मानों को नियंत्रित करता है।
महत्वपूर्ण नोट:
CHECK नियंत्रण डेटा अखंडता को बनाए रखने में मदद करता है क्योंकि यह सुनिश्चित करता है कि कॉलम में केवल मान्य मान दर्ज किए गए हैं।
क्रिएट टेबल पर एसक्यूएल चेक
"व्यक्ति" तालिका बनाते समय "आयु" कॉलम पर चेक नियंत्रण बनाने के लिए निम्नलिखित SQL का उपयोग किया जाता है। CHECK बाधा यह सुनिश्चित करती है कि किसी व्यक्ति की आयु 18 वर्ष या उससे अधिक होनी चाहिए:
MySQL:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);
SQL Server / Oracle / MS Access:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CHECK (Age>=18)
);
CHECK नियंत्रण का नामकरण और इसे एकाधिक स्तंभों पर परिभाषित करना
CHECK नियंत्रण को नाम दें, एकाधिक स्तंभों पर CHECK नियंत्रण को परिभाषित करें, और निम्नलिखित SQL सिंटैक्स का उपयोग करें:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
नोट:
उपरोक्त उदाहरण में, CHECK नियंत्रण यह सुनिश्चित करता है कि आयु 18 वर्ष या उससे अधिक होनी चाहिए और शहर 'सैंडनेस' होना चाहिए।
परिवर्तन तालिका पर एसक्यूएल जाँच
तालिका पहले ही बन जाने के बाद "आयु" कॉलम पर चेक नियंत्रण बनाने के लिए निम्नलिखित SQL का उपयोग करें:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (Age>=18);
CHECK नियंत्रण का नामकरण और इसे एकाधिक स्तंभों पर परिभाषित करना
CHECK नियंत्रण को नाम दें, एकाधिक स्तंभों पर CHECK नियंत्रण को परिभाषित करें, और निम्नलिखित SQL सिंटैक्स का उपयोग करें:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
चेक नियंत्रण हटा रहा है
CHECK नियंत्रण को हटाने के लिए, निम्न SQL का उपयोग करें:
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;
MySQL:
ALTER TABLE Persons
DROP CHECK CHK_PersonAge;
चेक नियंत्रण के लाभ
मूल्य पहुंच
- कॉलम में मानों को नियंत्रित करता है
- गलत डेटा प्रविष्टि को रोकता है
- डेटा सटीकता सुनिश्चित करता है
तार्किक नियम
- जटिल नियमों को परिभाषित करने की अनुमति देता है
- अनेक स्तंभों पर आधारित नियम
- व्यावसायिक नियम निष्पादित करता है
डेटा सुरक्षा
- डेटाबेस स्तर पर नियम लागू करता है
- एप्लिकेशन कोड से स्वतंत्र
- संपूर्ण डेटा सुरक्षा प्रदान करता है
शैली के उदाहरण
आयु प्रतिबंध
उम्र 0 से 150 के बीच ही हो सकती है
CREATE TABLE Users (
UserID int PRIMARY KEY,
Age int,
CHECK (Age BETWEEN 0 AND 150)
);
ईमेल सत्यापन
ईमेल में '@' चिह्न अवश्य होना चाहिए
CREATE TABLE Customers (
CustomerID int PRIMARY KEY,
Email varchar(255),
CHECK (Email LIKE '%@%')
);
कीमत और डिलीवरी
टोलुकडैम की कीमत से कम होनी चाहिए
CREATE TABLE Products (
ProductID int PRIMARY KEY,
Price decimal(10,2),
Discount decimal(10,2),
CHECK (Discount < Price)
);
उन्नत जांच उदाहरण
लिंग और शीर्षक
CREATE TABLE Employees (
EmployeeID int PRIMARY KEY,
Gender char(1),
Title varchar(10),
CHECK (
(Gender = 'M' AND Title IN ('Mr', 'Dr')) OR
(Gender = 'F' AND Title IN ('Ms', 'Mrs', 'Dr'))
)
);
दिनांक सत्यापन
CREATE TABLE Projects (
ProjectID int PRIMARY KEY,
StartDate date,
EndDate date,
CHECK (EndDate > StartDate)
);
प्रतिशत सीमा
CREATE TABLE Exams (
ExamID int PRIMARY KEY,
Score int,
CHECK (Score BETWEEN 0 AND 100)
);